<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Social extends MX_Controller {
    
    private $wwwUrl;
    private $CI;
    private $Gwhere;
    private $PathDefault;
    public function Social(){
        parent::__construct();
        parse_str($_SERVER['QUERY_STRING'], $_GET);
        $this->PathDefault = APPPATH.'third_party/';
        $this->CI =& get_instance();
        $this->wwwUrl = $this->CI->config->item('base_url');
        $this->load->model('users_model', 'users');
        require $this->PathDefault.'openid.php';
    }
    function OpenID($provider = null){
        $openid = new LightOpenID($this->wwwUrl);
        try {
            if(!$openid->mode){
                switch($provider){
                    case 1: // login with google
                        $this->Gwhere = 'Gmail';
                        $openid->identity = 'https://www.google.com/accounts/o8/id'; break;
                    case 2: // login with yahoo 
                        $this->Gwhere = 'Yahoo';
                        $openid->identity = 'https://me.yahoo.com'; break;
                }
                $openid->returnUrl = $this->wwwUrl.'users/social/openid/';
                $openid->required = array(
                    'contact/email', 
                    'namePerson/first', 
                    'namePerson/middle', 
                    'namePerson/last', 
                    'namePerson/friendly', 
                    'birthDate/birthYear',
                    'phone/default',                
                    'phone/home',               
                    'phone/business',               
                    'phone/cell',
                    'postaladdress/home',
                    'city/home', 
                    'state/home',
                    'postaladdressadditional/home',
                    'country/home',
                    'postalcode/home'
                );
                echo '<script> window.location.href = "'.$openid->authUrl().'"; </script>';
            } else if($openid->mode) { 
                if($openid->validate()){
                    $data = $openid->getAttributes();
                    // check username
                    $uname = !empty($data['namePerson/friendly']) ? $this->common->VNtoEN($data['namePerson/friendly']) : $data['contact/email'];
                    $username = $this->users->CheckUnique('username = "'.$uname.'"');
                    // check email
                    $this->users->table = 'profiles';
                    $email = $this->users->CheckUnique('email = "'.$data['contact/email'].'"');
                    if(!$username && !$email){ // is new member  
                        $password = $this->common->RandomStr();                       
                        $fullname = !empty($data['namePerson']) ? $data['namePerson'] : @$data['namePerson/last'].' '.@$data['namePerson/middle'].' '.@$data['namePerson/first'];
                        $fullname = !empty($fullname) ? $fullname : $data['namePerson/friendly'];
                        $phone = (!empty($data['phone/default'])) ? $data['phone/default'] : (!empty($data['phone/home']) ? $data['phone/home'] : @$data['phone/cell']);
                        $birthday = !empty($data['birthDate/birthYear']) ? date('Y-m-d', strtotime($data['birthDate/birthYear'])) 
                            : (!empty($data['birthDate']) ? date('Y-m-d', strtotime($data['birthDate'])) : '');
                        $address = !empty($data['postaladdress/home']) ? $data['postaladdress/home'] : @$data['postaladdressadditional/home'];
                        $profile = array(
                            'fullname' => $fullname,
                            'email'    => $data['contact/email'],
                            'birthday' => $birthday,
                            'phone'    => $phone,
                            'address'  => $address,
                            'country'  => @$data['country/home'],
                            'state'    => @$data['state/home'],
                            'city'     => @$data['city/home'],
                            'zip'      => @$data['postalcode/home']
                        );
                        $this->users->table = 'profiles';
                        $profile_id = $this->users->Insert_($profile);
                        $user = array(
                            'username'   => $uname,
                            'password'   => md5($password),
                            'date'       => date('Y-m-d H:i:s'),
                            'role_id'    => 2,
                            'profile_id' => $profile_id
                        );  
                        $this->users->table = 'users';
                        $user_id = $this->users->Insert_($user); 
                        if(!empty($user_id)){
                            $msg = 'Bạn đã đăng kí tài khoản trên MyPrints.VN thông qua '.$this->Gwhere.' 
                                và hệ thống của MyPrints đã cấp cho bạn mật khẩu: [<b>'.$password.'</b>].<br />
                                Bạn nên đăng nhập với thông tin tài khoản: <br /><b>
                                Tên Đăng Nhập: '.$uname.'<br />
                                Mật Khẩu: '.$password.'</b><br /> và thay đổi mật khẩu ngay để bảo mật cho tài khoản của bạn theo link sau: <br />
                                {unwrap}<a href="'.$this->wwwUrl.'users/changepassword/">'.$this->wwwUrl.'users/changepassword/</a>{/unwrap}
                                <br /><br /><br />MyPrints.VN';
                            $config = array(
                                'from'      => 'myprints.vn@gmail.com',
                                'from_name' => 'MyPrints.VN',
                                'subject'   => '[Mail tự động]Thông Báo Tài Khoản Trên MyPrints.VN',  
                                'to'        => $data['contact/email'],
                                'msg'       => $msg,
                                'cc'        => '',
                                'bcc'       => '',
                                'reply'     => '',
                                'rname'     => ''
                            );
                            $this->common->ConfigEmail($config);
                            $this->common->SendMailSMTP();                            
                        } 
                    } 
                    $this->users->table = 'users';
                    $userInfo = $this->users->Select_('username = "'.$uname.'"');
                    $this->users->table = 'profiles';
                    $userInfo = $this->users->Select_('id = "'.$userInfo['profile_id'].'"');
                    $this->session->set_userdata('user', $userInfo); 
                    redirect('/');                
                } else redirect('/');
            }
        } catch(ErrorException $e) { echo $e->getMessage(); }
    }
    public function LoginFB(){ 
        $email = $this->input->get('email');
        $name = $this->input->get('name');
        $username = $this->input->get('username');
        $birthday = $this->input->get('birthday');
        if(!empty($email)) {
            try {
                $CheckUN = $this->users->CheckUnique('username = "'.$username.'"');
                $this->users->table = 'profiles';
                $CheckM = $this->users->CheckUnique('email = "'.$email.'"');
        		if(!$CheckUN && !$CheckM){ // new member
                    $password = $this->common->RandomStr();       			
                    $profile = array(
                        'fullname' => $name,
                        'email'    => $email,
                        'birthday' => $birthday
                    );
                    $this->users->table = 'profiles';
                    $profile_id = $this->users->Insert_($profile);
                    $user = array(
                        'username'   => $username,
                        'password'   => md5($password),
                        'date'       => date('Y-m-d H:i:s'),
                        'role_id'    => 2,
                        'profile_id' => $profile_id
                    );  
                    $this->users->table = 'users';
                    $user_id = $this->users->Insert_($user);                    
                    if(!empty($user_id)){
                        $msg = 'Bạn đã đăng kí tài khoản trên MyPrints.VN thông qua Facebook 
                            và hệ thống của MyPrints đã cấp cho bạn mật khẩu: [<b>'.$password.'</b>].<br />
                            Bạn nên đăng nhập với thông tin tài khoản: <br /><b>
                            Tên Đăng Nhập: '.$username.'<br />
                            Mật Khẩu: '.$password.'</b><br /> và thay đổi mật khẩu ngay để bảo mật cho tài khoản của bạn theo link sau: <br />
                            {unwrap}<a href="'.$this->wwwUrl.'users/changepassword/">'.$this->wwwUrl.'users/changepassword/</a>{/unwrap}
                            <br /><br /><br />MyPrints.VN';
                            $config = array(
                                'from'      => 'myprints.vn@gmail.com',
                                'from_name' => 'MyPrints.VN',
                                'subject'   => '[Mail tự động]Thông Báo Tài Khoản Trên MyPrints.VN',  
                                'to'        => $data['contact/email'],
                                'msg'       => $msg,
                                'cc'        => '',
                                'bcc'       => '',
                                'reply'     => '',
                                'rname'     => ''
                            );
                            $this->common->ConfigEmail($config);
                            $this->common->SendMailSMTP();                            
                    } 
        		}
                $this->users->table = 'users';
                $userInfo = $this->users->Select_('username = "'.$username.'"');
                $this->users->table = 'profiles';
                $userInfo = $this->users->Select_('id = "'.$userInfo['profile_id'].'"');
                $this->session->set_userdata('user', $userInfo); 
                redirect('/');
            } catch(Exceptiion $e) { 
                error_log($e);
            }
        } else redirect('/');
    }
    
    
/* ===============================================

    END CLASS
    
    
================================================== */
}